/**
 * @addtogroup hj1239_frame_param_if
 * hj1239_frame_param_if
 * @{
 */
/**
 * @file        hj1239_frame_param_if.h
 * @brief       XXXX
 * @note        XXXX
 * @author      靳普诏(puzhao.jin@hopechart.com)
 * @date        2023/10/18
 * @version     1.0

 * @par         修改日志
 * <table>
 * <tr><th>Date         <th>Version     <th>Author      <th> Description
 * <tr><td>2023/10/18   <td>1.0         <td>靳普诏       <td> 创建初始版本
 * @copyright 杭州鸿泉物联网技术股份有限公司
 */

#ifndef _BSC_HJ1239_FRAME_PARAM_IF_H_
#define _BSC_HJ1239_FRAME_PARAM_IF_H_

#include "ofc/ofc_types.h"

#ifdef __cplusplus
extern "C"
{
#endif

enum TBsHj1239FwParamIdTag
{
    kHjFwParamIdFrameOnOff = 0,  ///< UInt8 权限: 只读  功能使能. 0：关闭；1：开启   
    kHjFwParamIdGprsSimCardIccid = 1,  ///< Mem 权限: 只读  SIM卡ICCID, 长度: 21，通常只有19。   
    kHjFwParamIdUtc8Time = 2,  ///< UInt32 权限: 只读  当前Rtc时间   
    kHjFwParamIdHsmChipId = 3,  ///< Mem 权限: 读写  国六芯片ID   
    kHjFwParamIdHsmPublicKey = 4,  ///< Mem 权限: 读写  获取公钥, 长度: 64。   
    kHjFwParamIdHsmActiveStatus = 5,  ///< UInt16 权限: 读写  最近一次备案返回状态   
    kHjFwParamIdVin = 6,  ///< Mem 权限: 只读  OBD 车辆识别码, 长度: 17。   
    kHjFwParamIdTerminalSoftVersion = 7,  ///< UInt8 权限: 只读  终端软件版本号,有效值范围0~255   
    kHjFwParamIdMax,
};
typedef enum TBsHj1239FwParamIdTag TBsHj1239FwParamId;



typedef struct IBsHj1239FwParamTag IBsHj1239FwParam;
/**
 * 读取数据
 * @param id            参数id
 * @param *r_data       读取数据缓存地址
 * @param r_data_size   读取数据缓存大小
 * @return >= 0 成功读取数据大小
 *         < 0  失败 
 */
typedef Int32 (* IBsHj1239FwParamDoReadData)(IBsHj1239FwParam *sender, TBsHj1239FwParamId id, void *r_data, UInt32 r_data_size);


/**
 * 写入数据
 * @param id            参数id
 * @param *i_data       写入数据地址
 * @param i_data_size   写入数据大小
 * @return >= 0 成功写入数据大小
 *         < 0  失败
 */
typedef Int32 (* IBsHj1239FwParamDoWriteData)(IBsHj1239FwParam *sender, TBsHj1239FwParamId id, const void *i_data, UInt32 i_data_size);



struct IBsHj1239FwParamTag
{
    IBsHj1239FwParamDoReadData      DoReadParam;
    IBsHj1239FwParamDoWriteData     DoWriteParam;

};


/**
 * 读取数据
 * @param *self         对象指针
 * @param id            参数id
 * @param *r_data       读取数据缓存地址
 * @param r_data_size   读取数据缓存大小
 * @return >= 0 成功读取数据大小
 *         < 0  失败 
 */
Int32 IBsHj1239FwParamRead(IBsHj1239FwParam *self, TBsHj1239FwParamId id, void *r_data, UInt32 r_data_size);


/**
 * 写入数据
 * @param *self         对象指针
 * @param id            参数id
 * @param *i_data       写入数据地址
 * @param i_data_size   写入数据大小
 * @return >= 0 成功写入数据大小
 *         < 0  失败
 */
Int32 IBsHj1239FwParamWrite(IBsHj1239FwParam *self, TBsHj1239FwParamId id, const void *i_data, UInt32 i_data_size);





#ifdef __cplusplus
}  ///< extern "C"
#endif

#endif  ///< _BSC_HJ1239_FRAME_PARAM_IF_H_

/**
 * @}  Generated on "2023-10-18 14:29:17" by the tool "gen_hq_file.py >> V20230509_1" 
 */
